Offloaded data transfer (ODX) refers to offloading data movement operations from host computers during data transfer operations which copy host data from sources to destinations within a data storage array or between data storage arrays. That is, rather than copy data from a data storage source to a host computer (where the data is buffered), and then from the host computer to a data storage destination, data is copied from the data storage source directly to the data storage destination. Such offloading of data movement operations saves host computer resources (e.g., host computer memory, bandwidth to and from host computers, etc.).
In one conventional approach, a host computer provides a “populate token” (PT) request which identifies, to the data storage array, particular host data for copying. The data storage array returns a token to the host computer in response to the PT request. Thereafter, devices (e.g., data storage arrays, host computers, etc.) are able to identify the particular host data using the token. For example, a host computer can subsequently provide to the data storage array a “write using token” (WUT) request which includes (i) the token and (ii) a data storage destination. The data storage array responds to the WUT request by performing a WUT operation which copies the particular host data from the data storage source directly to the data storage destination without buffering the particular host data on the host computer. Windows ODX is an offloaded data transfer technology which is provided by Microsoft Corporation of Redmond, Wash. and which operates in a manner similar to that described above.
It should be understood that a WUT operation which is in progress can be canceled prior to completion. For example, suppose that a data storage array starts a WUT operation to copy particular host data from the data storage source to the data storage destination. If the particular host data at the data storage source is modified before the WUT operation completes, the data storage array automatically cancels the WUT operation in order to preserve data integrity.